Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit ece55d10d6eada12728a24d925be1ff65b99c45e


Parents : 323241a
Author : Mark Qvist <mark@unsigned.io>
Date : 2022-05-17T13:25:00+02:00

Improved error handling

Changes

2 files changed, 17 insertions(+), 8 deletions(-)

M LXMF/LXMF.py +16 -7
M setup.py +1 -1

Diff

diff --git a/LXMF/LXMF.py b/LXMF/LXMF.py
index 6bb5714..9a486f7 100644
--- a/LXMF/LXMF.py
+++ b/LXMF/LXMF.py
@@ -339,15 +339,21 @@ class LXMessage:
RNS.log("Received delivery notification for "+str(self), RNS.LOG_DEBUG)
self.state = LXMessage.DELIVERED
- if self.__delivery_callback != None:
- self.__delivery_callback(self)
+ if self.__delivery_callback != None and callable(self.__delivery_callback):
+ try:
+ self.__delivery_callback(self)
+ except Exception as e:
+ RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR)
def __mark_propagated(self, receipt = None):
RNS.log("Received propagation success notification for "+str(self), RNS.LOG_DEBUG)
self.state = LXMessage.SENT
- if self.__delivery_callback != None:
- self.__delivery_callback(self)
+ if self.__delivery_callback != None and callable(self.__delivery_callback):
+ try:
+ self.__delivery_callback(self)
+ except Exception as e:
+ RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR)
def __resource_concluded(self, resource):
if resource.status == RNS.Resource.COMPLETE:
@@ -1130,8 +1136,11 @@ class LXMRouter:
message.transport_encrypted = False
message.transport_encryption = None
- if self.__delivery_callback != None:
- self.__delivery_callback(message)
+ if self.__delivery_callback != None and callable(self.__delivery_callback):
+ try:
+ self.__delivery_callback(message)
+ except Exception as e:
+ RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR)
return True
@@ -1593,7 +1602,7 @@ class LXMRouter:
self.failed_outbound.append(lxmessage)
lxmessage.state = LXMessage.FAILED
- if lxmessage.failed_callback != None:
+ if lxmessage.failed_callback != None and callable(lxmessage.failed_callback):
lxmessage.failed_callback(lxmessage)
def process_outbound(self, sender = None):

diff --git a/setup.py b/setup.py
index e218750..8a090d1 100644
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,6 @@ setuptools.setup(
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
- install_requires=['rns>=0.3.4'],
+ install_requires=['rns>=0.3.6'],
python_requires='>=3.6',
)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────